var Clazz = HTMLContainer.extend({
    init: function(origin, clazzDesc){
        var htmlNode = this._createHTML(clazzDesc);
        this._super(origin, htmlNode);
    },
    setClazzDescriptor: function(clazzDesc){
        var htmlNode = this._createHTML(clazzDesc);
        this.setHTMLNode(htmlNode);
    },
    _createHTML : function(clazzDesc){
        var clazz = document.createElement("table");
        clazz.setAttribute("class","uml-clazz");
        var clazzNameTr = document.createElement("tr");
        clazzNameTr.setAttribute("class","uml-clazz-name");
        var clazzNameTd = document.createElement("td");
        clazzNameTr.appendChild(clazzNameTd);
        clazz.appendChild(clazzNameTr);
        var clazzAttributesTr = document.createElement("tr");
        clazzAttributesTr.setAttribute("class","uml-clazz-attributes");
        var clazzAttributesTd = document.createElement("td");
        var clazzAttributesUl = document.createElement("ul");
        clazzAttributesTd.appendChild(clazzAttributesUl);
        clazzAttributesTr.appendChild(clazzAttributesTd);
        clazz.appendChild(clazzNameTr);
        var clazzMethodsTr = document.createElement("tr");
        clazzMethodsTr.setAttribute("class","uml-clazz-methods");
        var clazzMethodsTd = document.createElement("td");
        var clazzMethodsUl = document.createElement("ul");
        clazzMethodsTd.appendChild(clazzMethodsUl);
        clazzMethodsTr.appendChild(clazzMethodsTd);

        clazz.appendChild(clazzNameTr);
        clazz.appendChild(clazzAttributesTr);
        clazz.appendChild(clazzMethodsTr);


        clazzNameTd.innerHTML = clazzDesc.name;

        for(var i = 0 ; i < clazzDesc.attributes.length ; i++){
            var attribute = clazzDesc.attributes[i];
            var clazzAttributeLi = document.createElement("li");
            clazzAttributesUl.appendChild(clazzAttributeLi);
            clazzAttributeLi.innerHTML = attribute;
        }

        for(var i = 0 ; i < clazzDesc.methods.length ; i++){
            var method = clazzDesc.methods[i];
            var clazzMethodLi = document.createElement("li");
            clazzMethodsUl.appendChild(clazzMethodLi);
            clazzMethodLi.innerHTML = method;
        }
        return clazz;
    }

});